home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.42 / includes3v1 / includes3v1.lha / Intuition / Screens.i < prev    next >
Text File  |  1994-12-04  |  26KB  |  617 lines

  1. { Screens.i }
  2.  
  3.  
  4. {$I   "Include:exec/Types.i"}
  5. {$I   "Include:graphics/gfx.i"}
  6. {$I   "Include:Graphics/Clip.i"}
  7. {$I   "Include:Graphics/View.i"}
  8. {$I   "Include:Graphics/RastPort.i"}
  9. {$I   "Include:Graphics/Text.i"}
  10. {$I   "Include:Graphics/Layers.i"}
  11. {$I   "Include:Utility/TagItem.i"}
  12.  
  13. {
  14.  * NOTE:  intuition/iobsolete.h is included at the END of this file!
  15.  }
  16.  
  17. { ======================================================================== }
  18. { === DrawInfo ========================================================= }
  19. { ======================================================================== }
  20.  
  21. { This is a packet of information for graphics rendering.  It originates
  22.  * with a Screen, and is gotten using GetScreenDrawInfo( screen );
  23.  }
  24.  
  25. { If you find dri_Version >= DRI_VERSION, you know this structure
  26.  * has at least the fields defined in this version of the include file
  27.  }
  28. CONST
  29.  RI_VERSION  =    (1);     { obsolete, will be removed            }
  30.  DRI_VERSION =    (1);
  31.  
  32. Type
  33.  dri_Resolution_Struct = Record
  34.   x,y : Short;
  35.  END;
  36.  
  37.  DrawInfo = Record
  38.     dri_Version : Short;    { will be  DRI_VERSION                 }
  39.     dri_NumPens : Short;    { guaranteed to be >= numDrIPens       }
  40.     dri_Pens    : Address;  { pointer to pen array                 }
  41.  
  42.     dri_Font    : TextFontPtr;      { screen default font          }
  43.     dri_Depth   : Short;            { (initial) depth of screen bitmap     }
  44.  
  45.     dri_Resolution : dri_Resolution_Struct;              { from DisplayInfo database for initial display mode }
  46.  
  47.     dri_Flags : Integer;              { defined below                }
  48. { New for V39: dri_CheckMark, dri_AmigaKey. }
  49.     dri_CheckMark : Address; { ImagePtr }         { pointer to scaled checkmark image
  50.                                                   * Will be NULL if DRI_VERSION < 2
  51.                                                   }
  52.     dri_AmigaKey  : Address; { ImagePtr }    { pointer to scaled Amiga-key image
  53.                                              * Will be NULL if DRI_VERSION < 2
  54.                                              }
  55.  
  56.     dri_Reserved : Array[0..4] of Integer;        { avoid recompilation ;^)      }
  57.  END;
  58.  DrawInfoPtr = ^DrawInfo;
  59.  
  60. CONST
  61.  DRIF_NEWLOOK =   $00000001;      { specified SA_Pens, full treatment }
  62.  
  63. { rendering pen number indexes into DrawInfo.dri_Pens[]        }
  64.  DETAILPEN    =    ($0000);       { compatible Intuition rendering pens  }
  65.  BLOCKPEN     =    ($0001);       { compatible Intuition rendering pens  }
  66.  TEXTPEN      =    ($0002);       { text on background                   }
  67.  SHINEPEN     =    ($0003);       { bright edge on 3D objects            }
  68.  SHADOWPEN    =    ($0004);       { dark edge on 3D objects              }
  69.  FILLPEN      =    ($0005);       { active-window/selected-gadget fill   }
  70.  FILLTEXTPEN  =    ($0006);       { text over FILLPEN                    }
  71.  BACKGROUNDPEN =   ($0007);       { always color 0                       }
  72.  HIGHLIGHTTEXTPEN = ($0008);       { special color text, on background    }
  73. { New for V39, only present if DRI_VERSION >= 2: }
  74.  BARDETAILPEN   =  ($0009);       { text/detail in screen-bar/menus }
  75.  BARBLOCKPEN    =  ($000A);       { screen-bar/menus fill }
  76.  BARTRIMPEN     =  ($000B);       { trim under screen-bar }
  77.  
  78.  NUMDRIPENS   =    ($0009);
  79.  
  80. { New for V39:  It is sometimes useful to specify that a pen value
  81.  * is to be the complement of color zero to three.  The "magic" numbers
  82.  * serve that purpose:
  83.  }
  84.  PEN_C3        =  $FEFC;          { Complement of color 3 }
  85.  PEN_C2        =  $FEFD;          { Complement of color 2 }
  86.  PEN_C1        =  $FEFE;          { Complement of color 1 }
  87.  PEN_C0        =  $FEFF;          { Complement of color 0 }
  88.  
  89. { ======================================================================== }
  90. { === Screen ============================================================= }
  91. { ======================================================================== }
  92.  
  93. Type
  94.  
  95.     Screen = record
  96.         NextScreen      : ^Screen;      { linked list of screens }
  97.         FirstWindow     : Address;      { linked list Screen's Windows }
  98.  
  99.         LeftEdge,
  100.         TopEdge         : Short;        { parameters of the screen }
  101.         Width,
  102.         Height          : Short;        { parameters of the screen }
  103.  
  104.         MouseY,
  105.         MouseX          : Short;        { position relative to upper-left }
  106.  
  107.         Flags           : Short;        { see definitions below }
  108.  
  109.         Title           : String;       { null-terminated Title text }
  110.         DefaultTitle    : String;       { for Windows without ScreenTitle }
  111.  
  112.     { Bar sizes for this Screen and all Window's in this Screen }
  113.         BarHeight,
  114.         BarVBorder,
  115.         BarHBorder,
  116.         MenuVBorder,
  117.         MenuHBorder     : Byte;
  118.         WBorTop,
  119.         WBorLeft,
  120.         WBorRight,
  121.         WBorBottom      : Byte;
  122.  
  123.         Font            : TextAttrPtr;  { this screen's default font       }
  124.  
  125.     { the display data structures for this Screen (note the prefix S)}
  126.         SViewPort       : ViewPort;     { describing the Screen's display }
  127.         SRastPort       : RastPort;     { describing Screen rendering      }
  128.         SBitMap         : BitMap;       { extra copy of RastPort BitMap   }
  129.         LayerInfo       : Layer_Info;   { each screen gets a LayerInfo     }
  130.  
  131.     { You supply a linked-list of Gadgets for your Screen.
  132.      *  This list DOES NOT include system Gadgets.  You get the standard
  133.      *  system Screen Gadgets by default
  134.      }
  135.  
  136.         FirstGadget     : Address;
  137.  
  138.         DetailPen,
  139.         BlockPen        : Byte;         { for bar/border/gadget rendering }
  140.  
  141.     { the following variable(s) are maintained by Intuition to support the
  142.      * DisplayBeep() color flashing technique
  143.      }
  144.         SaveColor0      : Short;
  145.  
  146.     { This layer is for the Screen and Menu bars }
  147.         BarLayer        : LayerPtr;
  148.  
  149.         ExtData         : Address;
  150.         UserData        : Address;
  151.                         { general-purpose pointer to User data extension }
  152.     {**** Data below this point are SYSTEM PRIVATE ****}
  153.  
  154.     end;
  155.     ScreenPtr = ^Screen;
  156.  
  157. Const
  158.  
  159. { The screen flags have the suffix "_f" added to avoid conflicts with
  160.   routine names. }
  161.  
  162. { --- FLAGS SET BY INTUITION --------------------------------------------- }
  163. { The SCREENTYPE bits are reserved for describing various Screen types
  164.  * available under Intuition.
  165.  }
  166.     SCREENTYPE_f        = $000F;        { all the screens types available       }
  167. { --- the definitions for the Screen Type ------------------------------- }
  168.     WBENCHSCREEN_f      = $0001;        { Ta Da!  The Workbench         }
  169.     CUSTOMSCREEN_f      = $000F;        { for that special look         }
  170.  
  171.     SHOWTITLE_f         = $0010;        { this gets set by a call to ShowTitle() }
  172.  
  173.     BEEPING_f           = $0020;        { set when Screen is beeping            }
  174.  
  175.     CUSTOMBITMAP_f      = $0040;        { if you are supplying your own BitMap }
  176.  
  177.     SCREENBEHIND_f      = $0080;        { if you want your screen to open behind
  178.                                          * already open screens
  179.                                          }
  180.     SCREENQUIET_f       = $0100;        { if you do not want Intuition to render
  181.                                          * into your screen (gadgets, title)
  182.     SCREENHIRES         = $0200;        { do no use lowres gadgets (private)       }
  183.  
  184.     NS_EXTENDED         = $1000;          { ExtNewScreen.Extension is valid      }
  185.     { V36 applications can use OpenScreenTagList() instead of NS_EXTENDED  }
  186.  
  187. { New for V39: }
  188.     PENSHARED           = $0400;  { Screen opener set (SA_SharePens,TRUE) }
  189.  
  190.  
  191.     AUTOSCROLL          = $4000;  { screen is to autoscoll               }
  192.  
  193.     STDSCREENHEIGHT     = -1;           { supply in NewScreen.Height            }
  194.     STDSCREENWIDTH      = -1;           { supply in NewScreen.Width             }
  195.  
  196.  
  197.  
  198. {
  199.  * Screen attribute tag ID's.  These are used in the ti_Tag field of
  200.  * TagItem arrays passed to OpenScreenTagList() (or in the
  201.  * ExtNewScreen.Extension field).
  202.  }
  203.  
  204. { Screen attribute tags.  Please use these versions, not those in
  205.  * iobsolete.h.
  206.  }
  207. CONST
  208.   SA_Dummy    =    (TAG_USER + 32);
  209. {
  210.  * these items specify items equivalent to fields in NewScreen
  211.  }
  212.  SA_Left     =    (SA_Dummy + $0001);
  213.  SA_Top      =    (SA_Dummy + $0002);
  214.  SA_Width    =    (SA_Dummy + $0003);
  215.  SA_Height   =    (SA_Dummy + $0004);
  216.                         { traditional screen positions and dimensions  }
  217.  SA_Depth    =    (SA_Dummy + $0005);
  218.                         { screen bitmap depth                          }
  219.  SA_DetailPen=    (SA_Dummy + $0006);
  220.                         { serves as default for windows, too           }
  221.  SA_BlockPen =    (SA_Dummy + $0007);
  222.  SA_Title    =    (SA_Dummy + $0008);
  223.                         { default screen title                         }
  224.  SA_Colors   =    (SA_Dummy + $0009);
  225.                         { ti_Data is an array of struct ColorSpec,
  226.                          * terminated by ColorIndex = -1.  Specifies
  227.                          * initial screen palette colors.
  228.                          }
  229.  SA_ErrorCode=    (SA_Dummy + $000A);
  230.                         { ti_Data points to LONG error code (values below)}
  231.  SA_Font     =    (SA_Dummy + $000B);
  232.                         { equiv. to NewScreen.Font                     }
  233.  SA_SysFont  =    (SA_Dummy + $000C);
  234.                         { Selects one of the preferences system fonts:
  235.                          *      0 - old DefaultFont, fixed-width
  236.                          *      1 - WB Screen preferred font
  237.                          }
  238.  SA_Type     =    (SA_Dummy + $000D);
  239.                         { equiv. to NewScreen.Type                     }
  240.  SA_BitMap   =    (SA_Dummy + $000E);
  241.                         { ti_Data is pointer to custom BitMap.  This
  242.                          * implies type of CUSTOMBITMAP
  243.                          }
  244.  SA_PubName  =    (SA_Dummy + $000F);
  245.                         { presence of this tag means that the screen
  246.                          * is to be a public screen.  Please specify
  247.                          * BEFORE the two tags below
  248.                          }
  249.  SA_PubSig   =    (SA_Dummy + $0010);
  250.  SA_PubTask  =    (SA_Dummy + $0011);
  251.                         { Task ID and signal for being notified that
  252.                          * the last window has closed on a public screen.
  253.                          }
  254.  SA_DisplayID=    (SA_Dummy + $0012);
  255.                         { ti_Data is new extended display ID from
  256.                          * <graphics/displayinfo.h>.
  257.                          }
  258.  SA_DClip    =    (SA_Dummy + $0013);
  259.                         { ti_Data points to a rectangle which defines
  260.                          * screen display clip region
  261.                          }
  262.  SA_Overscan =    (SA_Dummy + $0014);
  263.                         { was S_STDDCLIP.  Set to one of the OSCAN_
  264.                          * specifiers below to get a system standard
  265.                          * overscan region for your display clip,
  266.                          * screen dimensions (unless otherwise specified),
  267.                          * and automatically centered position (partial
  268.                          * support only so far).
  269.                          * If you use this, you shouldn't specify
  270.                          * SA_DClip.  SA_Overscan is for "standard"
  271.                          * overscan dimensions, SA_DClip is for
  272.                          * your custom numeric specifications.
  273.                          }
  274.  SA_Obsolete1=    (SA_Dummy + $0015);
  275.                         { obsolete S_MONITORNAME                       }
  276.  
  277. {* booleans *}
  278.  SA_ShowTitle  =  (SA_Dummy + $0016);
  279.                         { boolean equivalent to flag SHOWTITLE         }
  280.  SA_Behind     =  (SA_Dummy + $0017);
  281.                         { boolean equivalent to flag SCREENBEHIND      }
  282.  SA_Quiet      =  (SA_Dummy + $0018);
  283.                         { boolean equivalent to flag SCREENQUIET       }
  284.  SA_AutoScroll =  (SA_Dummy + $0019);
  285.                         { boolean equivalent to flag AUTOSCROLL        }
  286.  SA_Pens       =  (SA_Dummy + $001A);
  287.                         { pointer to ~0 terminated UWORD array, as
  288.                          * found in struct DrawInfo
  289.                          }
  290.  SA_FullPalette=  (SA_Dummy + $001B);
  291.                         { boolean: initialize color table to entire
  292.                          *  preferences palette (32 for V36), rather
  293.                          * than compatible pens 0-3, 17-19, with
  294.                          * remaining palette as returned by GetColorMap()
  295.                          }
  296.  
  297.  SA_ColorMapEntries = (SA_Dummy + $001C);
  298.                         { New for V39:
  299.                          * Allows you to override the number of entries
  300.                          * in the ColorMap for your screen.  Intuition
  301.                          * normally allocates (1<<depth) or 32, whichever
  302.                          * is more, but you may require even more if you
  303.                          * use certain V39 graphics.library features
  304.                          * (eg. palette-banking).
  305.                          }
  306.  
  307.  SA_Parent      = (SA_Dummy + $001D);
  308.                         { New for V39:
  309.                          * ti_Data is a pointer to a "parent" screen to
  310.                          * attach this one to.  Attached screens slide
  311.                          * and depth-arrange together.
  312.                          }
  313.  
  314.  SA_Draggable   = (SA_Dummy + $001E);
  315.                         { New for V39:
  316.                          * Boolean tag allowing non-draggable screens.
  317.                          * Do not use without good reason!
  318.                          * (Defaults to TRUE).
  319.                          }
  320.  
  321.  SA_Exclusive   = (SA_Dummy + $001F);
  322.                         { New for V39:
  323.                          * Boolean tag allowing screens that won't share
  324.                          * the display.  Use sparingly!  Starting with 3.01,
  325.                          * attached screens may be SA_Exclusive.  Setting
  326.                          * SA_Exclusive for each screen will produce an
  327.                          * exclusive family.   (Defaults to FALSE).
  328.                          }
  329.  
  330.  SA_SharePens   = (SA_Dummy + $0020);
  331.                         { New for V39:
  332.                          * For those pens in the screen's DrawInfo->dri_Pens,
  333.                          * Intuition obtains them in shared mode (see
  334.                          * graphics.library/ObtainPen()).  For compatibility,
  335.                          * Intuition obtains the other pens of a public
  336.                          * screen as PEN_EXCLUSIVE.  Screens that wish to
  337.                          * manage the pens themselves should generally set
  338.                          * this tag to TRUE.  This instructs Intuition to
  339.                          * leave the other pens unallocated.
  340.                          }
  341.  
  342.  SA_BackFill    = (SA_Dummy + $0021);
  343.                         { New for V39:
  344.                          * provides a "backfill hook" for your screen's
  345.                          * Layer_Info.
  346.                          * See layers.library/InstallLayerInfoHook()
  347.                          }
  348.  
  349.  SA_Interleaved = (SA_Dummy + $0022);
  350.                         { New for V39:
  351.                          * Boolean tag requesting that the bitmap
  352.                          * allocated for you be interleaved.
  353.                          * (Defaults to FALSE).
  354.                          }
  355.  
  356.  SA_Colors32    = (SA_Dummy + $0023);
  357.                         { New for V39:
  358.                          * Tag to set the screen's initial palette colors
  359.                          * at 32 bits-per-gun.  ti_Data is a pointer
  360.                          * to a table to be passed to the
  361.                          * graphics.library/LoadRGB32() function.
  362.                          * This format supports both runs of color
  363.                          * registers and sparse registers.  See the
  364.                          * autodoc for that function for full details.
  365.                          * Any color set here has precedence over
  366.                          * the same register set by SA_Colors.
  367.                          }
  368.  
  369.  SA_VideoControl = (SA_Dummy + $0024);
  370.                         { New for V39:
  371.                          * ti_Data is a pointer to a taglist that Intuition
  372.                          * will pass to graphics.library/VideoControl(),
  373.                          * upon opening the screen.
  374.                          }
  375.  
  376.  SA_FrontChild  = (SA_Dummy + $0025);
  377.                         { New for V39:
  378.                          * ti_Data is a pointer to an already open screen
  379.                          * that is to be the child of the screen being
  380.                          * opened.  The child screen will be moved to the
  381.                          * front of its family.
  382.                          }
  383.  
  384.  SA_BackChild   = (SA_Dummy + $0026);
  385.                         { New for V39:
  386.                          * ti_Data is a pointer to an already open screen
  387.                          * that is to be the child of the screen being
  388.                          * opened.  The child screen will be moved to the
  389.                          * back of its family.
  390.                          }
  391.  
  392.  SA_LikeWorkbench     =   (SA_Dummy + $0027);
  393.                         { New for V39:
  394.                          * Set ti_Data to 1 to request a screen which
  395.                          * is just like the Workbench.  This gives
  396.                          * you the same screen mode, depth, size,
  397.                          * colors, etc., as the Workbench screen.
  398.                          }
  399.  
  400.  SA_Reserved          =   (SA_Dummy + $0028);
  401.                         { Reserved for private Intuition use }
  402.  
  403.  SA_MinimizeISG       =   (SA_Dummy + $0029);
  404.                         { New for V40:
  405.                          * For compatibility, Intuition always ensures
  406.                          * that the inter-screen gap is at least three
  407.                          * non-interlaced lines.  If your application
  408.                          * would look best with the smallest possible
  409.                          * inter-screen gap, set ti_Data to TRUE.
  410.                          * If you use the new graphics VideoControl()
  411.                          * VC_NoColorPaletteLoad tag for your screen's
  412.                          * ViewPort, you should also set this tag.
  413.                           }
  414.  
  415.  
  416. { this is an obsolete tag included only for compatibility with V35
  417.  * interim release for the A2024 and Viking monitors
  418.  }
  419.  NSTAG_EXT_VPMODE = (TAG_USER + 1);
  420.  
  421.  
  422. { OpenScreen error codes, which are returned in the (optional) LONG
  423.  * pointed to by ti_Data for the SA_ErrorCode tag item
  424.  }
  425.  OSERR_NOMONITOR   = (1);     { named monitor spec not available     }
  426.  OSERR_NOCHIPS     = (2);     { you need newer custom chips          }
  427.  OSERR_NOMEM       = (3);     { couldn't get normal memory           }
  428.  OSERR_NOCHIPMEM   = (4);     { couldn't get chipmem                 }
  429.  OSERR_PUBNOTUNIQUE= (5);     { public screen name already used      }
  430.  OSERR_UNKNOWNMODE = (6);     { don't recognize mode asked for       }
  431.  
  432. { ======================================================================== }
  433. { === NewScreen ========================================================== }
  434. { ======================================================================== }
  435.  
  436. Type
  437.  
  438.     NewScreen = record
  439.         LeftEdge,
  440.         TopEdge,
  441.         Width,
  442.         Height,
  443.         Depth           : Short;        { screen dimensions }
  444.  
  445.         DetailPen,
  446.         BlockPen        : Byte;         { for bar/border/gadget rendering }
  447.  
  448.         ViewModes       : Short;        { the Modes for the ViewPort (and View) }
  449.  
  450.         SType           : Short;        { the Screen type (see defines above) }
  451.  
  452.         Font            : TextAttrPtr;  { this Screen's default text attributes }
  453.  
  454.         DefaultTitle    : String;       { the default title for this Screen }
  455.  
  456.         Gadgets         : Address;      { your own Gadgets for this Screen }
  457.  
  458.     { if you are opening a CUSTOMSCREEN and already have a BitMap
  459.      * that you want used for your Screen, you set the flags CUSTOMBITMAP in
  460.      * the Type field and you set this variable to point to your BitMap
  461.      * structure.  The structure will be copied into your Screen structure,
  462.      * after which you may discard your own BitMap if you want
  463.      }
  464.  
  465.         CustomBitMap    : BitMapPtr;
  466.     end;
  467.     NewScreenPtr = ^NewScreen;
  468.  
  469.  
  470. type
  471.  
  472.  ExtNewScreen = Record
  473.   LeftEdge, TopEdge, Width, Height, Depth : Short;
  474.   DetailPen, BlockPen : Byte;
  475.   ViewModes : Short;
  476.   ens_Type : Short;     { Type in C-Includes }
  477.   Font : TextAttrPtr;
  478.   DefaultTitle : String;
  479.   Gadgets : Address;
  480.   CustomBitMap : BitMapPtr;
  481.   Extension : TagItemPtr;
  482.  END;
  483.  ExtNewScreenPtr = ^ExtNewScreen;
  484.  
  485.  
  486. CONST
  487. { === Overscan Types ===       }
  488.  OSCAN_TEXT     = (1);     { entirely visible     }
  489.  OSCAN_STANDARD = (2);     { just past edges      }
  490.  OSCAN_MAX      = (3);     { as much as possible  }
  491.  OSCAN_VIDEO    = (4);     { even more than is possible   }
  492.  
  493.  
  494. { === Public Shared Screen Node ===    }
  495.  
  496. { This is the representative of a public shared screen.
  497.  * This is an internal data structure, but some functions may
  498.  * present a copy of it to the calling application.  In that case,
  499.  * be aware that the screen pointer of the structure can NOT be
  500.  * used safely, since there is no guarantee that the referenced
  501.  * screen will remain open and a valid data structure.
  502.  *
  503.  * Never change one of these.
  504.  }
  505.  
  506. Type
  507.    PubScreenNode = Record
  508.     psn_Node    : Node;       { ln_Name is screen name }
  509.     psn_Screen  : ScreenPtr;
  510.     psn_Flags   : Short;      { below                }
  511.     psn_Size    : Short;      { includes name buffer }
  512.     psn_VisitorCount  : Short; { how many visitor windows }
  513.     psn_SigTask : TaskPtr;    { who to signal when visitors gone }
  514.     psn_SigBit  : Byte;     { which signal }
  515.    END;;
  516.    PubScreenNodePtr = ^PubScreenNode;
  517.  
  518. CONST
  519.  PSNF_PRIVATE  =  ($0001);
  520.  
  521.  MAXPUBSCREENNAME  =      (139);   { names no longer, please      }
  522.  
  523. { pub screen modes     }
  524.  SHANGHAI      =  $0001;  { put workbench windows on pub screen }
  525.  POPPUBSCREEN  =  $0002;  { pop pub screen to front when visitor opens }
  526.  
  527. { New for V39:  Intuition has new screen depth-arrangement and movement
  528.  * functions called ScreenDepth() and ScreenPosition() respectively.
  529.  * These functions permit the old behavior of ScreenToFront(),
  530.  * ScreenToBack(), and MoveScreen().  ScreenDepth() also allows
  531.  * independent depth control of attached screens.  ScreenPosition()
  532.  * optionally allows positioning screens even though they were opened
  533.  * (SA_Draggable,FALSE).
  534.  }
  535.  
  536. { For ScreenDepth(), specify one of SDEPTH_TOFRONT or SDEPTH_TOBACK,
  537.  * and optionally also SDEPTH_INFAMILY.
  538.  *
  539.  * NOTE: ONLY THE OWNER OF THE SCREEN should ever specify
  540.  * SDEPTH_INFAMILY.  Commodities, "input helper" programs,
  541.  * or any other program that did not open a screen should never
  542.  * use that flag.  (Note that this is a style-behavior
  543.  * requirement;  there is no technical requirement that the
  544.  * task calling this function need be the task which opened
  545.  * the screen).
  546.  }
  547.  
  548.  SDEPTH_TOFRONT        =  (0);     { Bring screen to front }
  549.  SDEPTH_TOBACK         =  (1);     { Send screen to back }
  550.  SDEPTH_INFAMILY       =  (2);     { Move an attached screen with
  551.                                          * respect to other screens of
  552.                                          * its family
  553.                                          }
  554.  
  555. { Here's an obsolete name equivalent to SDEPTH_INFAMILY: }
  556.  SDEPTH_CHILDONLY      =  SDEPTH_INFAMILY;
  557.  
  558.  
  559. { For ScreenPosition(), specify one of SPOS_RELATIVE, SPOS_ABSOLUTE,
  560.  * or SPOS_MAKEVISIBLE to describe the kind of screen positioning you
  561.  * wish to perform:
  562.  *
  563.  * SPOS_RELATIVE: The x1 and y1 parameters to ScreenPosition() describe
  564.  *      the offset in coordinates you wish to move the screen by.
  565.  * SPOS_ABSOLUTE: The x1 and y1 parameters to ScreenPosition() describe
  566.  *      the absolute coordinates you wish to move the screen to.
  567.  * SPOS_MAKEVISIBLE: (x1,y1)-(x2,y2) describes a rectangle on the
  568.  *      screen which you would like autoscrolled into view.
  569.  *
  570.  * You may additionally set SPOS_FORCEDRAG along with any of the
  571.  * above.  Set this if you wish to reposition an (SA_Draggable,FALSE)
  572.  * screen that you opened.
  573.  *
  574.  * NOTE: ONLY THE OWNER OF THE SCREEN should ever specify
  575.  * SPOS_FORCEDRAG.  Commodities, "input helper" programs,
  576.  * or any other program that did not open a screen should never
  577.  * use that flag.
  578.  }
  579.  
  580.  SPOS_RELATIVE         =  (0);     { Coordinates are relative }
  581.  
  582.  SPOS_ABSOLUTE         =  (1);     { Coordinates are expressed as
  583.                                          * absolutes, not relatives.
  584.                                          }
  585.  
  586.  SPOS_MAKEVISIBLE      =  (2);     { Coordinates describe a box on
  587.                                          * the screen you wish to be
  588.                                          * made visible by autoscrolling
  589.                                          }
  590.  
  591.  SPOS_FORCEDRAG        =  (4);     { Move non-draggable screen }
  592.  
  593. { New for V39: Intuition supports double-buffering in screens,
  594.  * with friendly interaction with menus and certain gadgets.
  595.  * For each buffer, you need to get one of these structures
  596.  * from the AllocScreenBuffer() call.  Never allocate your
  597.  * own ScreenBuffer structures!
  598.  *
  599.  * The sb_DBufInfo field is for your use.  See the graphics.library
  600.  * AllocDBufInfo() autodoc for details.
  601.  }
  602. Type
  603.  ScreenBuffer = Record
  604.     sb_BitMap  : BitMapPtr;           { BitMap of this buffer }
  605.     sb_DBufInfo : DBufInfoPtr;       { DBufInfo for this buffer }
  606.  end;
  607.  ScreenBufferPtr = ^ScreenBuffer;
  608.  
  609. const
  610. { These are the flags that may be passed to AllocScreenBuffer().
  611.  }
  612.  SB_SCREEN_BITMAP      =  1;
  613.  SB_COPY_BITMAP        =  2;
  614.  
  615. {$I "Include:Intuition/Intuition.i"}
  616.  
  617.